﻿
Namespace Models

    Partial Public Class SchoolClickDB_Repositorio

        ''' <summary>
        ''' Verifica si el Rol que se pasa, es un Rol valido
        ''' </summary>
        ''' <param name="NombreRol">Nombre del Rol que se desea comprobar</param>
        ''' <returns>Retorna 'VERDADERO' si el Nombre de Rol es valido en la base de datos, de lo contrario 'FALSO'</returns>
        ''' <remarks></remarks>
        Public Function RolExist(NombreRol As String) As Boolean
            Dim iResult As Integer = 0

            Try
                Using cnn As New SchoolClickEntities
                    iResult = cnn.ROLEEXIST(NombreRol).SingleOrDefault()
                End Using
            Catch ex As Exception
                Throw New Exception("Ocurrio un error al intentar conectar al servidor", ex)
            End Try

            Return If(iResult = 0, False, True)
        End Function

        ''' <summary>
        ''' Devuelve los roles especificados en el sistema del usuario indicado
        ''' </summary>
        ''' <param name="Username">Nombre del usuario del cual se desea obtener el rol dentro de la APP</param>
        ''' <returns>Retorna el rol al que pertenece el usuario en una cadena de texto</returns>
        ''' <remarks></remarks>
        Public Function GetRoles_For_User(Username As String) As String
            Dim sRol As String = String.Empty

            Try
                Using cnn As New SchoolClickEntities
                    sRol = cnn.GETROLES_FOR_USER(Username).SingleOrDefault()
                End Using
            Catch ex As Exception
                Throw New Exception("Ocurrio un error al intentar conectar al servidor", ex)
            End Try

            Return sRol
        End Function

        ''' <summary>
        ''' Verifica si el usuario especificado pertenece al rol especificado
        ''' </summary>
        ''' <param name="Usuario">Nombre del usuario del cual se desea verificar el rol</param>
        ''' <param name="Rol">Nombre del rol el cual se verificar si pertenece al usuario especificado</param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function IsUser_in_Rol(Usuario As String, Rol As String) As Boolean
            Dim iResult As Integer = 0

            Try
                Using cnn As New SchoolClickEntities
                    iResult = cnn.ISUSER_IN_ROLE(Usuario, Rol).SingleOrDefault
                End Using
            Catch ex As Exception
                Throw New Exception("Ocurrio un error al intentar conectar al servidor", ex)
            End Try

            Return If(iResult = 0, False, True)
        End Function

        ''' <summary>
        ''' Obtiene el menu de la base de datos para el rol especificado
        ''' </summary>
        ''' <param name="RoleName">Nombre del rol del cual se desea obtener su MenuBar</param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        <Authorize()> _
        Public Function Get_MenuBar_ByRol(RoleName As String) As List(Of GET_MENUBAR_BY_ROL_DATATYPE)
            Using cnn As New SchoolClickEntities
                Return cnn.GET_MENUBAR_BY_ROL(RoleName).ToList
            End Using
        End Function
    End Class
End Namespace
